<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

require_once 'abstract_model.php';
require_once 'model_usuario.php';

class model_carga extends abstract_model{
    
    public $CAR_ID = null;
    public $CLI_ID = null;
    public $CID_ORIGEM_ID = null;
    public $CID_DESTINO_ID = null;
    public $CAR_PRODUTO = null;
    public $CAR_VEICULO = null;
    public $CAR_ESPECIE = null;
    public $CAR_VALOR = null;
    public $CAR_CARROCERIA = null;
    public $CAR_OBSERVACAO = null;
    public $CAR_RASTREADO = 0;
    public $CAR_PESO = NULL;
    public $CAR_DATA_REGISTRO = NULL;
    public $CAR_DATA_VALIDADE = NULL;
    public $CAR_DH_VALIDADE = NULL;
    public $CAR_FINALIZADA = NULL;
    
    //View carga
    public $EST_ORIGEM_ID = NULL;
    public $EST_ORIGEM_SIGLA = NULL;
    public $CID_ORIGEM_NOME = NULL;
    public $CID_ORIGEM_LAT = NULL;
    public $CID_ORIGEM_LNG = NULL;
    public $EST_DESTINO_ID = NULL;
    public $EST_DESTINO_SIGLA = NULL;
    public $CID_DESTINO_NOME = NULL;
    public $CID_DESTINO_LAT = NULL;
    public $CID_DESTINO_LNG = NULL;
    
    protected $prefix = "CAR";


    public function setCAR_ID($value){
        if( !is_numeric($value))
            $this->throwValidationException("O campo CAR_ID deve ser numerico");
        
        $this->CAR_ID = $value;
    }
    
    public function setCLI_ID($value){
        if( !is_numeric($value))
            $this->throwValidationException("O campo CLI_ID deve ser numerico");
        
        $this->CLI_ID = $value;
    }
    
    public function setCID_ORIGEM_ID($value){
        if( !is_numeric($value))
            $this->throwValidationException("O campo CID_ORIGEM_ID deve ser numerico");
        
        $this->CID_ORIGEM_ID = $value;
    }
    
    public function setCID_DESTINO_ID($value){
        if( !is_numeric($value))
            $this->throwValidationException("O campo CID_DESTINO_ID deve ser numerico");
        
        $this->CID_DESTINO_ID = $value;
    }
    
    public function setCAR_PRODUTO($value){
        // Nao pode ser nulo e tem que ter ate 50 caracteres
        $expressao = "/^.{1,50}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_PRODUTO &eacute; obrigat&oacute;rio e deve ter no m&aacute;ximo 50 caracteres");
        
        $this->CAR_PRODUTO = $value;
    }
    
    public function setCAR_VEICULO($value){
        // Nao pode ser nulo e tem que ter ate 25 caracteres
        $expressao = "/^.{1,25}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_VEICULO &eacute; obrigat&oacute;rio e deve ter no m&aacute;ximo 25 caracteres");
        
        $this->CAR_VEICULO = $value;
    }
    
    public function setCAR_ESPECIE($value){
        // Tem que ter ate 25 caracteres
        $expressao = "/^.{0,25}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_ESPECIE deve ter no m&aacute;ximo 25 caracteres");
        
        $this->CAR_ESPECIE = $value;
    }
    
    public function setCAR_VALOR($value){
        $expressao = "/\./g";
        //removo os pontos
        $value = str_replace(".", "", $value);
        //substituo a virgula por ponto
        $value = str_replace(",", ".", $value);
        //verifico se e numerico
        if( !is_numeric($value))
            $this->throwValidationException("O campo CAR_VALOR deve ser numerico");
        // Verifico o comprimento do campo
        $expressao = "/^\d{1,9}\.\d{2}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_VALOR esta com o comprimento invalido");
        
        $this->CAR_VALOR = $value;
    }
    
    public function setCAR_CARROCERIA($value){
        // Tem que ter ate 25 caracteres
        $expressao = "/^.{0,25}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_CARROCERIA deve ter no m&aacute;ximo 25 caracteres");
        
        $this->CAR_CARROCERIA = $value;
    }
    
    public function setCAR_PESO($value){
        // Tem que ter ate 5 caracteres
        $expressao = "/^.{0,5}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_PESO deve ter no m&aacute;ximo 5 caracteres");
        
        $this->CAR_PESO = $value;
    }
    
    public function setCAR_RASTREADO($value){
        // Nao pode ser nulo e tem que ser 0 ou 1
        if ($value == '0' || $value == '1'){
            $this->CAR_RASTREADO = $value;
        }else 
            $this->throwValidationException("Valor incorreto para o campo CAR_RASTREADO");
    }
    
    public function setCAR_OBSERVACAO($value){
        // Remove o retorno de linha (carrier return) da string
        $value = str_replace("\r", "", $value);
        echo strlen($value);
        // Pode ser nulo ou ter ate 255 caracteres
        $expressao = "/^.{0,255}$/s";
        if(!preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_OBSERVACAO pode ter ate 255 caracteres");
        
        $this->CAR_OBSERVACAO = $value;
        
    }
    
    public function setCAR_DATA_REGISTRO($value){
        // A data deve ter o formato abaixo
        $expressao = "/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_DATA_REGISTRO esta no formato invalido");


        // Como validar a data
        $data = explode('/', $value);
        $d = $data[0];
        $m = $data[1];
        $a = $data[2];
        if (!checkdate($m, $d, $a)){
            $this->throwValidationException("O campo CAR_DATA_REGISTRO possui valor invalido");
            $this->CAR_DATA_REGISTRO = $value;
        }else{
            $this->CAR_DATA_REGISTRO = "$a-$m-$d";
        }
    }
    
    public function setCAR_DATA_VALIDADE($value){
        // A data deve ter o formato abaixo
        $expressao = "/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/";
        if( !preg_match($expressao, $value))
            $this->throwValidationException("O campo CAR_DATA_VALIDADE esta no formato invalido");


        // Como validar a data
        $data = explode('/', $value);
        $d = $data[0];
        $m = $data[1];
        $a = $data[2];
        if (!checkdate($m, $d, $a)){
            $this->throwValidationException("O campo CAR_DATA_FINALIZACAO possui valor invalido");
            $this->CAR_DATA_VALIDADE = $value;
        }else{
            $this->CAR_DATA_VALIDADE = "$a-$m-$d";
        }
    }
    
    public function getCAR_ID(){
        return $this->CAR_ID;
    }
    
    public function getCLI_ID(){
        return $this->CLI_ID;
    }
    
    public function getCID_ORIGEN_ID(){
        return $this->CID_ORIGEM_ID;
    }
    
    public function getCID_DESTINO_ID(){
        return $this->CID_DESTINO_ID;
    }
    
    public function getCAR_PRODUTO(){
        return $this->convert_characters($this->CAR_PRODUTO);
    }
    
    public function getCAR_VEICULO(){
        return $this->convert_characters($this->CAR_VEICULO);
    }
    
    public function getCAR_ESPECIE(){
        return $this->convert_characters($this->CAR_ESPECIE);
    }
    
    public function getCAR_VALOR(){
        return number_format($this->CAR_VALOR, 2, ",", ".");
    }
    
    public function getCAR_CARROCERIA(){
        return $this->convert_characters($this->CAR_CARROCERIA);
    }
    
    public function getCAR_RASTREADO(){
        return $this->CAR_RASTREADO;
    }
    
    public function getCAR_PESO(){
        return $this->CAR_PESO;
    }
    
    public function getCAR_DATA_REGISTRO(){
        // Como validar a data
        if ($this->CAR_DATA_REGISTRO != NULL){
            $data = explode('-', $this->CAR_DATA_REGISTRO);
            $a = $data[0];
            $m = $data[1];
            $d = $data[2];
            return "$d/$m/$a";
        }
        return NULL;
    }
    
    public function getCAR_DATA_VALIDADE(){
        // Como validar a data
        if ($this->CAR_DATA_VALIDADE != NULL){
            $data = explode('-', $this->CAR_DATA_VALIDADE);
            $a = $data[0];
            $m = $data[1];
            $d = $data[2];
            return "$d/$m/$a";
        }
        return NULL;
    }
    
    public function getCAR_DH_VALIDADE(){
        if ($this->CAR_DH_VALIDADE != NULL){
            $dados = $data = explode(' ', $this->CAR_DH_VALIDADE);
            $data = explode('-', $dados[0]);
            $a = $data[0];
            $m = $data[1];
            $d = $data[2];
            return "$d/$m/$a ".$dados[1];
        }
        return NULL;
    }
    
    public function getCAR_FINALIZADA(){
        return $this->CAR_FINALIZADA;
        
    }
    
    public function getCAR_OBSERVACAO(){
        return $this->convert_characters($this->CAR_OBSERVACAO);
    }

    // Setters e Getters da vw_carga
    // Localidade de origem
    public function setEST_ORIGEM_ID($value){     
        $this->EST_ORIGEM_ID = $value;
    }
    
    public function setEST_ORIGEM_SIGLA($value){     
        $this->EST_ORIGEM_SIGLA = $value;
    }
    
    public function setCID_ORIGEM_NOME($value){
        $this->CID_ORIGEM_NOME = $value;
    }
    
    pubLic function getEST_ORIGEM_ID(){
        return $this->EST_ORIGEM_ID;
    }
    
    pubLic function getEST_ORIGEM_SIGLA(){
        return $this->EST_ORIGEM_SIGLA;
    }
    
    pubLic function getCID_ORIGEM_NOME(){
        return $this->convert_characters($this->CID_ORIGEM_NOME);
    }
    
    // Localidade de destino
    public function setEST_DESTINO_ID($value){     
        $this->EST_DESTINO_ID = $value;
    }
    
    public function setEST_DESTINO_SIGLA($value){     
        $this->EST_DESTINO_SIGLA = $value;
    }
    
    public function setCID_DESTINO_NOME($value){
        $this->CID_DESTINO_NOME = $value;
    }
    
    public function getEST_DESTINO_ID(){
        return $this->EST_DESTINO_ID;
    }
    
    public function getEST_DESTINO_SIGLA(){
        return $this->EST_DESTINO_SIGLA;
    }
    
    public function getCID_DESTINO_NOME(){
        return $this->convert_characters($this->CID_DESTINO_NOME);
    }
    
    public function getCID_ORIGEM_LAT(){
        return $this->CID_ORIGEM_LAT;
    }
    
    public function getCID_ORIGEM_LNG(){
        return $this->CID_ORIGEM_LNG;
    }
    
    public function getCID_DESTINO_LAT(){
        return $this->CID_DESTINO_LAT;
    }
    
    public function getCID_DESTINO_LNG(){
        return $this->CID_DESTINO_LNG;
    }
}
?>
